﻿using System;
namespace Producers.Karis.Xtee.Riik.Ee.Producer.Karis {
    
    
    [global::Xtee.Core.Attributes.XmlTypeAttribute(Name="JIsik", Namespace="http://producers.karis.xtee.riik.ee/producer/karis", Target=typeof(JIsik))]
    public class JIsikSerializer : global::Xtee.Core.Types.AbstractXteeSerializable {
        
        protected IJIsik clazz;
        
        public JIsikSerializer(IJIsik clazz) {
            this.clazz = clazz;
        }
        
        public override void WriteXml(global::Xtee.Core.IXteeXmlWriter Writer) {
            base.WriteXml(Writer);
            Writer.WriteStartElement("ttJIsik.iIsik_id");
            Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "integer");
            Writer.WriteString(new global::Xtee.Core.Schema.XsdInteger(((decimal)(clazz.TtJIsikiIsikId))).ToString());
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttJIsik.iIsik_uniq_id");
            Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "integer");
            Writer.WriteString(new global::Xtee.Core.Schema.XsdInteger(((decimal)(clazz.TtJIsikiIsikUniqId))).ToString());
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttJIsik.cJkood");
            if (clazz.TtJIsikcJkood!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtJIsikcJkood))).ToString());
            }
            else {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException("Nullable is not allowed for element : TtJIsikcJkood");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttJIsik.cNimetus");
            if (clazz.TtJIsikcNimetus!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtJIsikcNimetus))).ToString());
            }
            else {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException("Nullable is not allowed for element : TtJIsikcNimetus");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttJIsik.cTyyp");
            if (clazz.TtJIsikcTyyp!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtJIsikcTyyp))).ToString());
            }
            else {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException("Nullable is not allowed for element : TtJIsikcTyyp");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttJIsik.cAsukoht");
            if (clazz.TtJIsikcAsukoht!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtJIsikcAsukoht))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttJIsik.cAsukoht_lisa");
            if (clazz.TtJIsikcAsukohtLisa!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtJIsikcAsukohtLisa))).ToString());
            }
            else {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException("Nullable is not allowed for element : TtJIsikcAsukohtLisa");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttJIsik.cLisainfo");
            if (clazz.TtJIsikcLisainfo!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtJIsikcLisainfo))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttJIsik.cKustutatud");
            if (clazz.TtJIsikcKustutatud!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtJIsikcKustutatud))).ToString());
            }
            else {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException("Nullable is not allowed for element : TtJIsikcKustutatud");
            }
            Writer.WriteEndElement();
        }
        
        public override void ReadXml(global::Xtee.Core.IXteeXmlReader Reader) {
            base.ReadXml(Reader);
        START:
            if ((Reader.LocalName == "ttJIsik.iIsik_id")) {
                goto ttJIsikiIsik_id;
            }
            else {
                if ((Reader.LocalName == "ttJIsik.iIsik_uniq_id")) {
                    goto ttJIsikiIsik_uniq_id;
                }
                else {
                    if ((Reader.LocalName == "ttJIsik.cJkood")) {
                        goto ttJIsikcJkood;
                    }
                    else {
                        if ((Reader.LocalName == "ttJIsik.cNimetus")) {
                            goto ttJIsikcNimetus;
                        }
                        else {
                            if ((Reader.LocalName == "ttJIsik.cTyyp")) {
                                goto ttJIsikcTyyp;
                            }
                            else {
                                if ((Reader.LocalName == "ttJIsik.cAsukoht")) {
                                    goto ttJIsikcAsukoht;
                                }
                                else {
                                    if ((Reader.LocalName == "ttJIsik.cAsukoht_lisa")) {
                                        goto ttJIsikcAsukoht_lisa;
                                    }
                                    else {
                                        if ((Reader.LocalName == "ttJIsik.cLisainfo")) {
                                            goto ttJIsikcLisainfo;
                                        }
                                        else {
                                            if ((Reader.LocalName == "ttJIsik.cKustutatud")) {
                                                goto ttJIsikcKustutatud;
                                            }
                                            else {
                                                return;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        ttJIsikiIsik_id:
            if (Reader.IsElementNil()) {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException(">>JIsik>ttJIsik.iIsik_id");
            }
            clazz.TtJIsikiIsikId = new global::Xtee.Core.Schema.XsdInteger(Reader.ReadElementString("ttJIsik.iIsik_id")).Value;
            goto START;
        ttJIsikiIsik_uniq_id:
            if (Reader.IsElementNil()) {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException(">>JIsik>ttJIsik.iIsik_uniq_id");
            }
            clazz.TtJIsikiIsikUniqId = new global::Xtee.Core.Schema.XsdInteger(Reader.ReadElementString("ttJIsik.iIsik_uniq_id")).Value;
            goto START;
        ttJIsikcJkood:
            if (Reader.IsElementNil()) {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException(">>JIsik>ttJIsik.cJkood");
            }
            clazz.TtJIsikcJkood = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttJIsik.cJkood")).Value;
            goto START;
        ttJIsikcNimetus:
            if (Reader.IsElementNil()) {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException(">>JIsik>ttJIsik.cNimetus");
            }
            clazz.TtJIsikcNimetus = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttJIsik.cNimetus")).Value;
            goto START;
        ttJIsikcTyyp:
            if (Reader.IsElementNil()) {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException(">>JIsik>ttJIsik.cTyyp");
            }
            clazz.TtJIsikcTyyp = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttJIsik.cTyyp")).Value;
            goto START;
        ttJIsikcAsukoht:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtJIsikcAsukoht = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttJIsik.cAsukoht")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        ttJIsikcAsukoht_lisa:
            if (Reader.IsElementNil()) {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException(">>JIsik>ttJIsik.cAsukoht_lisa");
            }
            clazz.TtJIsikcAsukohtLisa = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttJIsik.cAsukoht_lisa")).Value;
            goto START;
        ttJIsikcLisainfo:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtJIsikcLisainfo = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttJIsik.cLisainfo")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        ttJIsikcKustutatud:
            if (Reader.IsElementNil()) {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException(">>JIsik>ttJIsik.cKustutatud");
            }
            clazz.TtJIsikcKustutatud = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttJIsik.cKustutatud")).Value;
            goto START;
        }
    }
}
